<?php

cfgload("defines");

/**
 * SQL Fix: 2013/09/10 19:10 
 * ALTER TABLE  `filmsItunes` ADD  `Studio` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT  'n/a',
 *   ADD  `RatingAnnotation` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT  'n/a',
 *   ADD  `Copyright` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT  'n/a'
 * 
 * SQL Fix: 2013/09/10 19:24
 * ALTER TABLE  `filmsItunes` ADD  `XID` VARCHAR( 255 ) NOT NULL DEFAULT  'n/a'
 */

/**
 * Класс по поиску и получения itunes инфы по фильму
 *
 * @author Di_Moon
 */
class ItunesInfo {
    protected   $filmnames = array();
    public      $filmsdata = array();
    
    protected   $kinopoisk;
    
    function __construct($kinopoiskFilmId) { 
        $this->kinopoisk = $kinopoiskFilmId;
    }
    
    function setFilmName($country, $filmname) {
        $this->filmnames[$country] = $filmname;
    }
    
    function generateURL($country) {
        $film = $this->filmnames[$country];
        return ITUNES_API_URL."media=movie&country=".$country."&term=".urlencode($film);
    }
    
    function generateCacheFileName($country) {
        return $filename = ITUNES_CACHEDIR.$this->kinopoisk.".".$country.".json";
    }
    
    function isDataFromCache($country, $force=0) {
        // Если установлен флаг игнорирования - данные берутся не из кэша
        if($force == 1) return 0;
        
        // Если есть кэш-файл, данные берутся из кэша
        if(file_exists($this->generateCacheFileName($country))) {
            return 1;
        }
        
        return 0;
    }
    
    function requestJsonData($country, $force=0) {
        $filename = $this->generateCacheFileName($country);
        $url = $this->generateURL($country);
        if(!file_exists($filename) || $force == 1) {
            // файла в кэше нет либо установлен флаг игнорирования
            // наличия данных в кэше. сделаем запрос к апи итюнса
            $data = file_get_contents($url);
            if(!$data) return null;
            file_put_contents($filename, $data);
            return $data;
        }        
        return file_get_contents($filename);
    }
    
    function requestData() {
        foreach($this->filmnames as $country=>$film) {
            $data = $this->requestJsonData($country);
            $this->filmsdata[$country] = null;

            // Получить данные не получилось
            if(!data) continue;
            
            $data = json_decode($data);
            $resultsCount = $data->resultCount;
            $resultsData = $data->results;
            
            if($resultsCount == 0) continue;
            
            for($i=0;$i<$resultsCount;$i++) {
                $subData = $resultsData[$i];

                if(strpos($subData->trackName, $film) !== false) {
                    // Есть совпадение имени фильма в возвращённых данных
                    $t["Name"] = $subData->trackName;
                    $t["CensoredName"] = $subData->trackCensoredName;
                    $t["Artist"] = $subData->artistName;
                    $t["Genre"] = $subData->primaryGenreName;
                    $t["Release Date"] = $subData->releaseDate;
                    $t["Description"] = $subData->shortDescription;
                    $t["Long Description"] = $subData->longDescription;
                    $t["Rating"] = $subData->contentAdvisoryRating;
                    $t["Cast"] = "";
                    $t["Director"] = "";
                    $t["Producers"] = "";
                    $t["Screenwriters"] = "";
                    $t["contentID"] = $subData->trackId;
                    $t["XID"] = "Apple:vendor_id:".date("Y", strtotime($subData->releaseDate))."-".$this->kinopoisk;
                    $t["Picture100"] = $subData->artworkUrl100;
                    $t["Picture"] = $this->posterURLProcessor($subData->artworkUrl100);
                    $t["Studio"] = "";
                    $t["RatingAnnotation"] = "";
                    $t["Copyright"] = "";
                    
                    $this->filmsdata[$country] = $t;
                }
            }

            //print_r($resultsData);
        }
    }
    
    static function posterURLProcessor($url) {
        $a = explode("/", $url);
        $f = $a[sizeof($a)-1];
        
        $fa = explode(".", $f);
        $fname = "";
        for($i=0;$i<sizeof($fa);$i++) {
            if($i!=sizeof($fa)-2) $fname .= $fa[$i].".";
            if($i==sizeof($fa)-2) $fname .= "600x600-75.";
        }
        $fname = substr($fname, 0, strlen($fname)-1);
        
        $a[sizeof($a)-1] = $fname;
        $rUrl = implode("/", $a);
        return $rUrl;
    }
}

?>
